/** @type {import('next').NextConfig} */
import crypto from 'crypto';
import createMDX from '@next/mdx';
const nextConfig = {
	reactStrictMode: false,
	output: 'standalone', // 使用独立打包
	// 每次保存时运行 ESLint
	eslint: {
		// 新版本改为 dirs 配置
		dirs: ['app', 'hooks', 'store'] // 指定要检查的目录
	},
	generateBuildId: async () => {
		// 纯随机模式
		return `build-${crypto.randomBytes(4).toString('hex')}`;
	},
	// 修改默认的缓存策略
	async headers() {
		return [
			{
				source: '/(.*)', // 匹配所有路径
				headers: [
					{
						key: 'Cache-Control',
						value: 'no-cache, no-store, must-revalidate' // 禁止缓存，每次都从服务器获取最新内容
					},
					{
						key: 'Pragma', // 对于HTTP/1.0的兼容性
						value: 'no-cache'
					},
					{
						key: 'Expires', // 设置过期时间为过去，确保不使用缓存
						value: '0'
					}
				]
			}
		];
	},
	logging: {
		fetches: {
			fullUrl: true
		}
	}, // 在开发模式下显示请求的日志
	images: {
		remotePatterns: [
			{
				protocol: 'https',
				hostname: '*',
				port: '',
				pathname: '/**'
			}
		],
		// 图片优化配置 - 修复生产环境加载问题
		deviceSizes: [320, 420, 640, 750, 828, 1080, 1200, 1920, 2048, 3840],
		imageSizes: [16, 32, 48, 64, 96, 128, 256, 384],
		loader: 'default',
		dangerouslyAllowSVG: true,
		contentSecurityPolicy: "default-src 'self'; script-src 'none'; sandbox;",
		minimumCacheTTL: 3600, // 1小时，减少服务器压力
		formats: ['image/webp', 'image/avif'] // 支持现代格式
		// 如果生产环境问题持续，可启用此选项禁用优化
		// unoptimized: process.env.NODE_ENV === 'production'
	}, // 请求协议为https的网络图片资源
	typescript: {
		// 忽略 TypeScript 构建错误
		ignoreBuildErrors: true
	},
	skipTrailingSlashRedirect: false, // 是否跳过url尾部斜杠重定向
	env: {
		NEXT_PUBLIC_DISABLE_TRACE: 'true',
		NEXT_PUBLIC_BASE_URL: process.env.NEXT_PUBLIC_BASE_URL,
		NEXT_SHARP_PATH: process.env.NEXT_SHARP_PATH
	},
	distDir: 'dist'
};
const isProd = ['production'].includes(process.env.NODE_ENV);

const withMDX = createMDX({
	// Add markdown plugins here, as desired
	options: {}
});
export default withMDX(nextConfig);
